<?php if ( ! defined("BASEPATH")) exit("No direct script access allowed");

class Usuarios extends CI_Controller {
		
	public function __construct(){
		parent::__construct();
		init_painel();
	}

	public function index(){
		$this->gerenciar();
	}
	
	public function cadastrar(){
		$this->load->model('cidades_model');
		esta_logado();
		$this->form_validation->set_message('is_unique', 'Este %s já está cadastrado no sistema');
		$this->form_validation->set_message('matches', 'O campo %s está diferente do campo %s');
		$this->form_validation->set_rules('nome', 'NOME', 'trim|required|ucwords');
		$this->form_validation->set_rules('email', 'EMAIL', 'trim|required|valid_email|is_unique[usuarios.email]|strtolower');
		$this->form_validation->set_rules('login', 'LOGIN', 'trim|required|min_length[4]|is_unique[usuarios.login]|strtolower');
		$this->form_validation->set_rules('senha', 'SENHA', 'trim|required|min_length[4]|strtolower');
		$this->form_validation->set_rules('senha2', 'REPITA A SENHA', 'trim|required|min_length[4]|strtolower|matches[senha]');
		$this->form_validation->set_rules('permissao_grupo_id', 'PERMISSÃO DE USUÁRIO', 'required');
		
		if ($this->form_validation->run()==TRUE):
			$dados = elements(array('nome', 'email', 'login', 'permissao_grupo_id'), $this->input->post(NULL, TRUE));
			$dados['senha'] = md5($this->input->post('senha', TRUE));
			$dados['adm'] = 1;
			$this->usuarios->do_insert($dados, FALSE);
			auditoria('Cadastro de Usuário', $this->input->post('nome', TRUE).' foi cadastrado como usuário do site.');
			redirect(current_url());
		endif;
		$data = array(
			'tela' => 'cadastrar'
		);
		set_tema('footerinc', load_js(array('app.min')));
		set_tema('titulo', 'Cadastro de usuários');
		set_tema('conteudo', load_modulo('painel', 'usuarios', $data));
		load_template();
	}

	public function gerenciar(){
		esta_logado();
		$data = array(
			'tela'	=> 'gerenciar',
			'query'	=> $query = $this->usuarios->get_all()->result()
		);
		set_tema('headerinc', load_css(array('datatables/dataTables.foundation.min')));
		set_tema('footerinc', load_js(array('datatables/jquery.dataTables.min', 'datatables/dataTables.foundation.min', 'app.min')));
		set_tema('titulo', 'Listagem de usuários');
		set_tema('conteudo', load_modulo('painel', 'usuarios', $data));
		load_template();
	}
	
	public function alterar_senha(){
		esta_logado();
		$this->form_validation->set_message('matches', 'O campo %s está diferente do campo %s');
		$this->form_validation->set_rules('senha', 'SENHA', 'trim|required|min_length[4]|strtolower');
		$this->form_validation->set_rules('senha2', 'REPITA A SENHA', 'trim|required|min_length[4]|strtolower|matches[senha]');
		if ($this->form_validation->run()==TRUE):
			$dados['senha'] = md5($this->input->post('senha', TRUE));
			$usuario = $this->usuarios->get_byid($this->session->userdata('user_id'))->row()->login;
			$this->usuarios->do_update($dados, array('id'=>$this->input->post('idusuario', TRUE)),FALSE);
			auditoria('Edição de Senha', 'O usuário "'.$usuario.'" editou sua senha');
			redirect(current_url());
		endif;
		$data = array(
			'tela' => 'alterar_senha',
			'iduser' => $iduser = $this->uri->segment(4)
		);
		set_tema('footerinc', load_js(array('app.min')));
		set_tema('titulo', 'Alteração de senha');
		set_tema('conteudo', load_modulo('painel', 'usuarios', $data));
		load_template();
	}
	
	public function editar(){
		esta_logado();
		$iduser = $this->uri->segment(4);
		$this->form_validation->set_rules('nome', 'NOME', 'trim|required|ucwords');
		$this->form_validation->set_rules('permissao_grupo_id', 'PERMISSÃO DE USUÁRIO', 'required');
		if ($this->form_validation->run()==TRUE):
			$dados['permissao_grupo_id'] = $this->input->post('permissao_grupo_id');
			$dados['nome'] = $this->input->post('nome', TRUE);
			$dados['ativo'] = ($this->input->post('ativo', TRUE)==1 ? 1 : 0);
			$dados['adm'] = 1;
			$this->usuarios->do_update($dados, array('id'=>$this->input->post('idusuario', TRUE)), FALSE);
			auditoria('Edição de Usuário', 'O perfil de "'.$this->input->post('nome', TRUE).'" foi editado.');
			redirect(current_url());
		endif;
		$data = array(
			'tela'		=> 'editar',
			'iduser'	=> $iduser,
			'query'		=> $this->usuarios->get_byid($iduser)->row()
		);
		set_tema('footerinc', load_js(array('app.min')));
		set_tema('titulo', 'Alteração de usuários');
		set_tema('conteudo', load_modulo('painel', 'usuarios', $data));
		load_template();
	}
	
	public function excluir(){
		esta_logado();
		if (is_admin(TRUE)):
			$iduser = $this->uri->segment(4);
			if ($iduser != NULL):
				$query = $this->usuarios->get_byid($iduser);
				if ($query->num_rows()==1):
					$query = $query->row();
					if ($query->id != 1):
						$usuario = $this->usuarios->get_byid($this->session->userdata('user_id'))->row()->login;
						$this->usuarios->do_delete(array('id'=>$query->id), FALSE);
						auditoria('Exclusão de Usuário', 'O usuário "'.$usuario.'" excluiu um usuário');
					else:
						set_msg('msgerro', 'Este usuário não pode ser excluído', 'erro');
					endif;
				else:
					set_msg('msgerro', 'Usuário não encontrado para exclusão', 'erro');
				endif;
			else:
				set_msg('msgerro', 'Escolha um usuário para excluir', 'erro');
			endif;
		endif;
		redirect('painel/usuarios/gerenciar');
	}
	
	function getCidades($id) {
		$this->load->model('cidades_model');
		$cidades = $this->cidades_model->getCidades($id);
		if( empty ($cidades))
			return '{ "nome": Nenhuma cidade encontrada" }';
		echo json_encode($cidades);
        return;
    }
	
}

/* End of file usuarios.php */
/* Location: ./application/controllers/usuarios.php */
